小勘誤: 前幾天提到我們會把六大類都至少做過一題,但是 picoCTF 的 Misc 類 -- Uncategorized 並沒有收錄任何題目,所以我們並不會做到 Misc 類,告知各位。但是反正這本來就是綜合分類,我們會挑其他五大類題目來做的。
引言
不知道你是否有聽過犯罪現場的「法醫」這個工作,
像是在台灣有「台灣福爾摩斯」之稱的楊日松先生,
就是很有名的法醫,法醫一般都在犯罪現場做「鑑識」的工作:
[摘錄自維基百科:鑑識科學]
鑑識科學(英語:forensic science),是一種利用科學手段處理、解決與司法體系利益相關問題的科學。其主要針對刑事及民事案件。此外與法律體系相關,法醫學更多強調與運用與事實、事件、物理標的事物(例如犯罪現場、屍體)相關的學術及科學方法論及理論。
最簡單的講法就是:
從某個人、事、地、物的目前狀態,由科學方法去推敲想知道的事情或是來龍去脈。
你可以看到上面維基百科的節錄,「鑑識」的英文就是「 forensic 」 (「法醫的」也是這個字) ,
加了 s 變成 「鑑識學」,也就是這個主題的名字。
基本上這個主題就是在做各種檔案 ( 如圖片 ) 的鑑識,從中尋找 flag 的蛛絲馬跡。
Forensics / information
這題只給了一張圖片,看起來是出題者家中的貓~
提示
這題並沒有給什麼有用的提示,只是告訴我們好好看圖片的細節。
解法
zsteg 可以找出以各種 image steganography (影像隱寫術) 隱藏的資料,如 LSB 隱寫術以及各種將資訊藏匿在圖像中的技術。Github: zsteg
利用 xxd 命令以十六進位表示出整張圖片的資料,可以發現檔案開頭是 0xffd8 (SOI, start of image) ,結尾是 0xffd9 (EOI, end of image) ,應該沒有在尾端插入多餘資料。嚴謹點來說,如果怕「圖中圖」,也就是 SOI SOI EOI EOI 這樣的結構, 應該寫程式檢查整個檔案中有沒有多餘的 SOI 和 EOI
用 exiftool 工具檢查圖片檔頭的 EXIF:
ExifTool Version Number : 11.88
File Name : cat.jpg
Directory : .
File Size : 858 kB
File Modification Date/Time : 2021:09:15 14:57:12+08:00
File Access Date/Time : 2021:09:15 15:00:46+08:00
File Inode Change Date/Time : 2021:09:15 14:57:39+08:00
File Permissions : rw-rw-r--
File Type : JPEG
File Type Extension : jpg
MIME Type : image/jpeg
JFIF Version : 1.02
Resolution Unit : None
X Resolution : 1
Y Resolution : 1
Current IPTC Digest : 7a78f3d9cfb1ce42ab5a3aa30573d617
Copyright Notice : PicoCTF
Application Record Version : 4
XMP Toolkit : Image::ExifTool 10.80
License : cGljb0NURnt0aGVfbTN0YWRhdGFfMXNfbW9kaWZpZWR9
Rights : PicoCTF
Image Width : 2560
Image Height : 1598
Encoding Process : Baseline DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2)
Image Size : 2560x1598
Megapixels : 4.1
觀察到資料中有兩行「亂碼」,分別是 Current IPTC Digest 與 License ,試著用 base64 來解碼:
7a78f3d9cfb1ce42ab5a3aa30573d617
$ echo '7a78f3d9cfb1ce42ab5a3aa30573d617' | base64 -d
解碼後:���w}q��q�6i�Zݦ�Ӟ�w�{
cGljb0NURnt0aGVfbTN0YWRhdGFfMXNfbW9kaWZpZWR9
$ echo 'cGljb0NURnt0aGVfbTN0YWRhdGFfMXNfbW9kaWZpZWR9' | base64 -d
解碼後:picoCTF{the_m3tadata_1s_modified}
找到 flag : picoCTF{the_m3tadata_1s_modified}